Radio frequency (RF) communication systems, particularly in the context of communication involving portable, battery-powered terminals, have always had to deal with slow communication speeds. In an application environment, data is communicated between portable terminals, network controllers, and host computers, for example. In order for a system to truly be a "real-time" system, there cannot be any significant delay in operation when data communication takes place.
In a typical RF system, it can take approximately two milliseconds to transmit a character of information. In order to fill even a relatively small portable screen with characters, it can take approximately one second. When fragmentation into packets and packet overhead time is taken into account, the time required to refresh a full screen of information is well over a second, which results in a noticeable delay for an end user. Such a delay has a negative effect on the user's time productivity, and also on the overall ease of use and comfort with the communication system.
There have been a number of attempts to solve the problems created by insufficient communication speed. One such solution is known as "mirroring." This approach is implemented by having a network controller "mirror" a portable terminal's display image in its memory. When the display screen needs to be updated, the controller transmits only the changes from the current screen, rather than transmitting the entire new screen information. This approach gives a portable terminal the ability to redisplay the same screen or a similar screen very quickly.
There are many drawbacks to the mirroring solution. By requiring both a controller and a portable terminal to have a display in memory, applications which run terminal emulation must have coded versions of the emulation software in both the terminal and the controller. New terminal emulations would need to be coded twice to obtain mirroring benefits. Also, it is extremely difficult to keep the functionality of a controller in sync with the functionality of one or more portable terminals. If these devices are not in sync, the mirroring solution does not work at all. Finally, even if the mirroring is working perfectly, there is no way to toggle between two or three display screens quickly, which is useful in many applications.
Another possible solution is known as a "static dictionary" approach. A network controller can be pre-loaded with certain display screens that may be utilized most often in portable terminals, and these screens can be forwarded to the terminals. Whenever a portable terminal requires a new display screen that is among the pre-loaded screens, the controller can transmit a reference, such as a number, which tells the terminal to use the appropriate screen, which is already in its memory. This approach allows a portable terminal to completely change from a current display to another display in a fraction of the time otherwise required.
However, there are also some negative factors associated with the static dictionary solution. The main problem with this approach is that someone must decide initially which display screens are the most probable in the application environment, to pre-load into the controller. This pre-loading must be done differently for each individual application in order to attempt to pre-load the most frequently occurring screens for each application. Also, any time the pre-loaded screens need to be changed, the controller must be manually reprogrammed.
Static dictionary solutions also provide only one set of display screens, known as a "history," in the controller's memory for all terminals. Modifying this solution to be adaptive would require the controller to transmit dictionary updates to every portable terminal, which would substantially reduce the benefits of implementing the compression in the first place. Neither the mirroring approach, the static dictionary approach, nor a static dictionary approach modified to be adaptive completely satisfy the objectives of data compression in a radio frequency communication system.
Another problem with data compression in a radio frequency communication system is the inflexibility of data compression features between different devices. There are multiple data compression techniques, and communication devices generally support only one or a limited number of them in combination. It is often the case that a device attempting communication will only execute data compression in its transmission if the receiving device supports the exact same data compression technique, or the same combination of techniques.
As a result, two differently configured devices will communicate with no data compression at all, when it is possible that they may both support some of the same data compression features, but with a different combination.
There have been many attempts to compress data so as to reduce communication times. Some of the resulting technologies are referred to as bit-oriented techniques, such as Huffman, Arithmetic, or Shannon-Fano encoding. With these schemes, the number of bits used to represent a code element vary in inverse proportion with the frequency of usage. The space character, for example, may only take 1 bit to encode, and the `Q` character may take 23 bits to encode. These techniques are often used in conjunction with other methods to achieve significant compression ratios.
However, without hardware support, the receiving processor has to inspect each bit of the compressed data to determine what it means. The data is looked up in a binary tree until a leaf has been found in the tree, and the represented code can be determined. In an adaptive compression scheme, the expansion process must also adjust the binary tree for every character decoded. All this data manipulation takes a significant amount of time and memory, which is not acceptable in a radio frequency "real-time" communication system.
Another technique for compressing data is known as a sliding dictionary scheme. While the data is being compressed, a certain amount of past uncompressed data is searched for a match to what is about to be compressed. If no match is found, one character is output and the search for a match begins again with the next input character. When a match is found, a pointer to the previous uncompressed stored data and its length is output instead. During expansion, each character is inspected to determine if it represents a pointer. If not, the character is transferred to the output unchanged. If it is a pointer, it is used to point back into the uncompressed stored data, and the data is copied to the output.
Sliding dictionary compression can be extremely slow when it is searching for a match. Special techniques are required to speed up the search for a match. Also, there are a large number of flags in sliding dictionary compressed data, and an entire 8-bit character is transmitted every time a flag is transmitted. This occupies significant space in a transmission which is not directly related to data, and is inefficient.
Thus, there is a need for a display refresh and data compression solution that flexibly and efficiently minimizes the effects of slow transmission speeds on operation of a radio frequency communication system. There is also a need for a data compression solution that is fast, efficient, and requires a relatively small amount of memory.
An object of the invention is to provide a display refresh and data compression solution that decreases operating delay for a user of a portable terminal in a radio frequency communication system.
Another object of the invention is to provide a display refresh and data compression solution that decreases average screen update time without requiring terminal emulation coding in both a network controller and a portable terminal.
Yet another object of the invention is to provide a display refresh and data compression solution that is adaptable to decrease average screen update time in a variety of diverse applications without manual reprogramming.
A further object of the invention is to provide a display refresh and data compression solution that eliminates the need to transmit dictionary updates to all portable terminals.
A still further object of the invention is to provide a data compression solution that allows communication devices to execute data compression even when they are not configured with all of the exact same compression features.
An object of the invention is to provide a data compression solution that requires a minimal amount of memory in the place of expansion, such as a portable terminal.
Another object of the invention is to provide a data compression solution that utilizes communication bandwidth efficiently to directly communicate data information.
Yet another object of the invention is to provide a data compression solution that speeds up the search for a match in a sliding dictionary compression scheme.